Proposed by Nicolas Scarcella (profile, biography) Don't forget to submit this proposal to official Google Melange site too!
How will I do that project
I'll start by researching hashing algorithms and familiarizing myself with the different versions of hashed collections from as many distributions as possible. After that, I'll work in a general design, with focus in trying to favor composition over inheritance. Then I'll implement the storage strategies, and, later on, the collection classes.
I intend to keep in close contact with both the mentors and the community in order to achieve optimal functional results.
What methodologies will I use
I'll go ahead with Test Driven Development. Due to project's linear nature and well defined objectives it seems to me it will be the best way to ensure a robust and simple final release.
Suggested timeline and milestones
In the first two weeks I'll research hashing algorithms and other implementations in order to formulate a general design idea.
Once that's acomplished, the next three weeks should be used to implement and test the open addressing with linear probing and hashed buckets storage strategies.
I'll dedicate the posterior four weeks to develop and test the Hashed Set and Dictionary classes, dedicating the two first weeks to the Set hierarchy and the later two weeks to the Dictionaries.
Where I see the risks
Probably the main challenge of the project is to implement the storage algorithms in a more elegant way than the current alternatives without compromising efficiency or speed. A thorough test suit will be necessary to ensure optimal performance.
How the results will look like
I expect to achieve a minimalistic yet fully operational loadable library. As I'll be paying extra attention to the design, I expect the final result to be reusable and fully extensible.
|